package com.obligatorio.domain;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;

@Entity
@NamedQueries({
		@NamedQuery(name = "findUserMessage", query = "SELECT m FROM Mensaje m WHERE m =:Menssage "
				+ "AND m.buzon =:Buzon"),
		@NamedQuery(name = "findStatusMessage", query = "SELECT m FROM Mensaje m WHERE "
				+ "buzon =:Buzon AND estado =:Status") })
public class Mensaje implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer id;

	
	@OneToOne(fetch=FetchType.EAGER)
	@JoinColumn(name = "UsuarioTo", nullable = false)
	private Usuario idUsuarioTo;

	@OneToOne(fetch=FetchType.EAGER)
	@JoinColumn(name = "UsuarioFrom", nullable = false)
	private Usuario idUsuarioFrom;

	@Column(nullable = false)
	private String asunto;

	@Column(nullable = true)
	private String mensaje;

	@Column(nullable = true)
	private String nota;

	@ManyToOne
	private Buzon buzon;

	@Enumerated(EnumType.STRING)
	private EstadosMail estado;

	@Enumerated(EnumType.STRING)
	private EstadosMail estadoLeido;

	public Integer getId() {
		return id;
	}

	public EstadosMail getEstado() {
		return estado;
	}

	public void setEstado(EstadosMail estados) {
		this.estado = estados;
	}

	public EstadosMail getEstadoLeido() {
		return estadoLeido;
	}

	public void setEstadoLeido(EstadosMail estadoLeido) {
		this.estadoLeido = estadoLeido;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Usuario getIdUsuarioTo() {
		return idUsuarioTo;
	}

	public void setIdUsuarioTo(Usuario idUsuarioTo) {
		this.idUsuarioTo = idUsuarioTo;
	}

	public Usuario getIdUsuarioFrom() {
		return idUsuarioFrom;
	}

	public void setIdUsuarioFrom(Usuario idUsuarioFrom) {
		this.idUsuarioFrom = idUsuarioFrom;
	}

	public String getAsunto() {
		return asunto;
	}

	public void setAsunto(String asunto) {
		this.asunto = asunto;
	}

	public String getMensaje() {
		return mensaje;
	}

	public void setMensjae(String mensjae) {
		this.mensaje = mensjae;
	}

	public String getNota() {
		return nota;
	}

	public void setNota(String nota) {
		this.nota = nota;
	}

	public Buzon getBuzon() {
		return buzon;
	}

	public void setBuzon(Buzon buzon) {
		this.buzon = buzon;
	}

	public Mensaje(Integer id, Usuario idUsuarioTo, Usuario idUsuarioFrom,
			String asunto, String mensjae, String nota, Buzon buzon) {
		this.id = id;
		this.idUsuarioTo = idUsuarioTo;
		this.idUsuarioFrom = idUsuarioFrom;
		this.asunto = asunto;
		this.mensaje = mensjae;
		this.nota = nota;
		this.buzon = buzon;
	}

	public Mensaje() {
	}

}
